php:留言板 第十八天

  1. 主要任务留言板编写
    1. 文件上传
    2. 根目录设计
    3. 留言板注册界面
    4. 留言板登录界面
    5. 留言板编辑界面
    6. 留言板展示界面

主要任务留言板编写

留言板开发过程中的用到的编程:

64位的加密:
$title=base64_encode($title);

64位的解密:
$title=base64_dencode($title);

数据分割:
explode('.',$str);

php文件内容操作函数:

fopen();  打开文件

fread();  读取文件多少个字符

fgets();  获得一行数据

feof();   判断光标是否到结尾

fputs() 和 fwrite($f,$data);将数据$data写入$f文件中

fclose($f); 关闭文件$f.

file_get_contents() 函数把整个文件读入一个字符串中

file_put_contents() 函数把一个字符串写入文件中

file_exists();   判断文件是否存在

is_file()  判断是否是文件

is_dir()  判断是否是目录

php对文件夹的操作

创建文件                 mkdir('tmp')

删除文件夹                 rmdir()

判断是否是一个文件夹      is_dir('/tmp')  true/false

获取文件所在的文件夹   dirname("/tmp/test/a.php") ==>  /tmp/test

获取文件的文件名   basename('/tmp/test/a.php')  ==>  a.php

文件上传

提交数据:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

//这个数据提交表单为文件或者图片等

<form enctype="multipart/form-data" method="post" action="upload.php">
    <input type="file" name="Filedata" value="">   //name关系对应
    <input type="submit">
</form>

</body>
</html>

数据处理:
<?php

var_dump($_FILES);
//$str= explode('.',$_FILES['Filedata']['tmp_name']);
$file=$_FILES['Filedata'];//FILES中的文件灿在数组

move_uploaded_file($file['tmp_name'],'file/'.time().'_'.$file['name']);
//以文件原名保存到file文件中

//copy($_FILES['Filedata']['tmp_name'],'file/a.jpg');
//move_uploaded_file 与copy相同的作用
//sleep(20);
//name 、tmp_file、type、filesize、error


?>

根目录设计

根目录展示页面:

根目录

留言板注册界面

信息提交代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册</title>
    <link rel="stylesheet" type="text/css" href="css/1.css">
</head>
<body>
<div class=box>

    <div class=top>
        <h1>注册</h1>
    </div>
    <form action="reg.php" method="post">
        <input type="text" name="username" placeholder="手机/邮箱/用户名">
        <br>
        <input type="password" name="password1" placeholder="密码">
        <br>
        <input type="password" name="password2" placeholder="确认密码">
        <br>
        <input class="login" type="submit" name="submit" value="注册">

    </form>
</div>
</body>
</html>

处理信息代码:

<?php

//通过session验证两次密码输入是否正确
session_start();
$_SESSION['passwd1']=$_POST['password1'];
$_SESSION['passwd2']=$_POST['password2'];
if($_SESSION['passwd1']==$_SESSION['passwd2']){

    $username=base64_encode($_POST['username']);
    $password=base64_encode($_POST['password1']);

    $data="$username||$password\n";


    $f=fopen('data/users.db','a');
    fwrite($f,$data);
    fclose($f);

    echo "<script>alert('注册完成');location.href='login.html';</script>";

}else{
    echo "<script>alert('两次密码不对');location.href='reg.html';</script>";
}

?>

留言板登录界面

登录信息提交:

<!DOCTYPE html>
<html>
<head>
    <title>登录表单</title>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="css/1.css">
</head>
<body>
<div class=box>

    <div class=top>
        <h1>登录</h1>
    </div>
    <form action="login.php" method="post">
        <input type="text" name="username" placeholder="手机/邮箱/用户名">
        <br>
        <input type="password" name="password" placeholder="密码">
        <br>
        <input class="input_code" type="text" name="verifycode" placeholder="验证码">
        <img class="verifycode" src="https://passport.360.cn/captcha.php?m=create&app=i360&scene=login&userip=&level=default&sign=8820a4&r=1564540365&border=none&_=1564540365972">
        <br>
        <a class="getpass" href="getpass.php">忘记密码</a>
        <br>
        <input class="login" type="submit" name="submit" value="登录">

    </form>
</div>
</body>
</html>

登录数据处理:

<?php
session_start();
$_SESSION['uname']=($_POST['username']);


$username=($_POST['username']);
$password=($_POST['password']);
$date=date('Y-m-d H:i:s',time());
$ip=getLocalIP();

$dat="$username||$password||$date||$ip\n";

$f=fopen('data/users.db','r');
$islogin=false;
while(!feof($f)){
    $tmp=fgets($f);
    $data=explode('||',$tmp);

    if($username==base64_decode($data[0]) && $password==base64_decode($data[1])){

        $m=fopen('data/sigindata.db','a');
        fwrite($m,$dat);
        fclose($m);
        echo "<script>alert('登录成功');location.href='edit_news.html';</script>";
        $islogin=true;
    }
}
    if(!$islogin){
        echo "<script>alert('登录失败');location.href='login.html';</script>";
    }


function getLocalIP() {
    $preg = "/\A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\Z/";
//获取操作系统为win2000/xp、win7的本机IP真实地址
    exec("ipconfig", $out, $stats);
    if (!empty($out)) {
        foreach ($out AS $row) {
            if (strstr($row, "IP") && strstr($row, ":") && !strstr($row, "IPv6")) {
                $tmpIp = explode(":", $row);
                if (preg_match($preg, trim($tmpIp[1]))) {
                    return trim($tmpIp[1]);
                }
            }
        }
    }
}

?>

留言板编辑界面

提交数据:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>news 编辑</title>
    <style type="text/css">
        input{
            height: 50px;
            width: 150px;
        }
        name{
            height: 250px;
            width: 300px;
        }
    </style>
</head>
<body>
<center>
    <form action="add_news.php" method="post">
        <p>序号</p>
        <input type="text" name="num" value="" placeholder="序号">
        <p>热度</p>
        <input type="text" name="hot" value="" placeholder="热度">
        <p>标题</p>
        <input type="text" name="title" value="" placeholder="标题">
        <p>文本域</p>
        <textarea name="text">

        </textarea>
        <p>作者</p>
        <input type="text" name="author" value="" placeholder="作者">

        <p>图片</p>
        <input type="text" name="img">
        <p>提交</p>
        <input type="submit">

    </form>
</center>
</body>
</html>

数据处理:
<?php
session_start();
if (!isset($_SESSION['uname'])) {
    echo "<script>alert('请登录账户');location.href='login.html';</script>";
    die();
}


$num=base64_encode($_POST['num']);
$hot=base64_encode($_POST['hot']);
$title=base64_encode($_POST['title']);
$text=base64_encode($_POST['text']);
$author=base64_encode($_POST['author']);
$date=time();
$img=base64_encode($_POST['img']);

$data="{$num}||{$hot}||{$title}||{$text}||{$author}||{$date}||{$img}"."\n";

$f=fopen("data/news.db","a");
fwrite($f,$data);
fclose($f);

echo "<script>alert('添加完成');location.href='index.php';</script>";

?>

留言板展示界面

页面展示代码:
<?php
session_start();
?>

<!DOCTYPE html>
<html>
<head>
    <style type="text/css">
        table {
            width: 80%;
        }
        th {
            width: 300px;
            text-align: center;
            height: 50px;
        }
        td {
            height: 30px;
            width: 300px;
            text-align: center;
        }
        img {
            /*width: 250px;*/
            height: 100px;
        }
    </style>

</head>
<body>
<center>
    <br>
    <h1>新闻社</h1>
    <hr>
    <table>
        <tr>
            <th>序号</th>
            <th>热度</th>
            <th>标题</th>
            <th>作者</th>
            <th>发表时间</th>
            <th>操作</th>
        </tr>

        <?php
        $f=fopen('data/news.db','r');
        $i=1;
        while(!feof($f)){
            $tmp=fgets($f);
            $data=explode('||',$tmp);
            if(count($data) !=7){
                continue;
            }
            echo_table($data);
            if($i<3){
                echo_info($data);
            }
            $i++;
        }


        ?>

    </table>
        <hr>
        <br>
        <br>
    <h3>版权所有</h3>
    <h3>2019 ICQ  意见反馈 京ICP证03173号  京公网安备110000012931号</h3>
    <br>
</center>


</body>
</html>

<?php


function echo_info($data){
    $content = substr(base64_decode($data[3]),0,300);
    $img_url=base64_decode(($data[6]));
    echo <<<eof
    <tr>
        <td><img src="$img_url"></td>
        <td colspan="4">{$content }</td>
</tr>
eof;

}



function echo_table($data){
    $num=base64_decode($data[0]);
    $hot = base64_decode($data[1]);
    $author = base64_decode($data[4]);
    $add_date=date('Y-m-d',$data[5]);
    $title=base64_decode($data[2]);

    echo <<<EOF
    <tr>
        <td>{$num}</td>
        <td>{$hot}</td>
        <td>{$title}</td>
        <td>{$author}</td>
        <td>{$add_date}</td>

    </tr>
EOF;



}

?>

页面效果


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 zhumeng512@qq.com

文章标题:php:留言板 第十八天

本文作者:弈少

发布时间:2019-08-09, 18:30:14

最后更新:2019-08-10, 10:58:20

原始链接:http://yoursite.com/2019/08/09/北京渗透测试第十八天 20190808/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏

相册